home *** CD-ROM | disk | FTP | other *** search
/ BMUG Revelations / BMUG Revelations.toast / Programming / Programming Languages / Harvest C / MPW Int & Lib / Interfaces / DatabaseAccess.h < prev    next >
Text File  |  1991-04-17  |  7KB  |  210 lines

  1. /************************************************************
  2.  
  3. Created: Tuesday, March 21, 1989 at 9:39 AM
  4.     DatabaseAccess.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.     Copyright Apple Computer, Inc.     1989-1991
  9.     All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13. #ifndef __DATABASEACCESS__
  14. #define __DATABASEACCESS__
  15.  
  16. #ifndef __RESOURCES__
  17. #include <Resources.h>
  18. #endif
  19.  
  20. /* OSErr error and status codes */
  21. enum {rcDBNull = -800};
  22. enum {rcDBValue = -801};
  23. enum {rcDBError = -802};
  24. enum {rcDBBadType = -803};
  25. enum {rcDBBreak = -804};
  26. enum {rcDBExec = -805};
  27. enum {rcDBBadSessID = -806};
  28. enum {rcDBBadSessNum = -807};       /* bad session number for DBGetConnInfo */
  29.  
  30. enum {rcDBBadDDEV = -808};          /* bad ddev specified on DBInit */
  31.  
  32. enum {rcDBAsyncNotSupp = -809};     /* ddev does not support async calls */
  33. enum {rcDBBadAsyncPB = -810};       /* tried to kill a bad pb */
  34.  
  35. enum {rcDBNoHandler = -811};        /* no app handler for specified data type */
  36.  
  37. enum {rcDBWrongVersion = -812};     /* incompatible versions */
  38. enum {rcDBPackNotInited = -813};    /* attempt to call other routine before InitDBPack */
  39.  
  40. /*  messages for status functions for DBStartQuery  */
  41. enum {kDBUpdateWind = 0};
  42. enum {kDBAboutToInit = 1};
  43. enum {kDBInitComplete = 2};
  44. enum {kDBSendComplete = 3};
  45. enum {kDBExecComplete = 4};
  46. enum {kDBStartQueryComplete = 5};
  47.  
  48. /*  messages for status functions for DBGetQueryResults  */
  49. enum {kDBGetItemComplete = 6};
  50. enum {kDBGetQueryResultsComplete = 7};
  51.  
  52. /* data type codes */
  53. typedef OSType DBType;
  54.  
  55. #define     typeDate        'date'
  56. #define     typeTime        'time'
  57. #define     typeTimeStamp    'tims'
  58. #define     typeChar        'TEXT'
  59. #define     typeDecimal     'deci'
  60. #define     typeMoney        'mone'
  61. #define     typeVChar        'vcha'
  62. #define     typeVBin        'vbin'
  63. #define     typeLChar        'lcha'
  64. #define     typeLBin        'lbin'
  65. #define     typeDiscard     'disc'
  66.  
  67. /* "dummy" types for DBResultsToText */
  68. #define     typeUnknown     'unkn'
  69. #define     typeColBreak    'colb'
  70. #define     typeRowBreak    'rowb'
  71.  
  72. /* pass this in to DBGetItem for any data type */
  73. #define     typeAnyType     (DBType)0
  74.  
  75. /* infinite timeout value for DBGetItem */
  76. enum {kDBWaitForever = -1};
  77.  
  78. /*  flags for DBGetItem  */
  79. enum {kDBLastColFlag = 0x0001};
  80. enum {kDBNullFlag = 0x0004};
  81.  
  82. /* structure for asynchronous parameter block */
  83. struct DBAsyncParamBlockRec {
  84.     ProcPtr     completionProc; /* pointer to completion routine */
  85.     OSErr        result;         /* result of call */
  86.     long        userRef;        /* for application's use */
  87.     long        ddevRef;        /* for ddev's use */
  88.     long        reserved;        /* for internal use */
  89. };
  90. typedef struct DBAsyncParamBlockRec DBAsyncParamBlockRec;
  91. typedef DBAsyncParamBlockRec *DBAsyncParmBlkPtr;
  92.  
  93. /* structure for resource list in QueryRecord */
  94.  
  95. struct ResListElem {
  96.     ResType     theType;        /* resource type */
  97.     short        id;             /* resource id */
  98. };
  99. typedef struct ResListElem ResListElem;
  100. typedef ResListElem *ResListPtr,**ResListHandle;
  101.  
  102. /* structure for query list in QueryRecord */
  103.  
  104. typedef Handle **QueryListHandle;    /* just handles to 'wstr' resources */
  105.  
  106. struct QueryRecord {
  107.     short            version;        /* version */
  108.     short            id;             /* id of 'qrsc' this came from */
  109.     Handle            queryProc;        /* handle to query def proc */
  110.     Str63            ddevName;        /* ddev name */
  111.     Str255            host;            /* host */
  112.     Str255            user;            /* user */
  113.     Str255            password;        /* password */
  114.     Str255            connStr;        /* connection string */
  115.     short            currQuery;        /* current query */
  116.     short            numQueries;     /* number of queries in queryList */
  117.     QueryListHandle queryList;        /* handle to list of queries */
  118.     short            numRes;         /* number of resources in resList */
  119.     ResListHandle    resList;        /* handle to list of other resources */
  120.     Handle            dataHandle;     /* data used by query def proc */
  121.     long            refCon;         /* query's reference value */
  122. };
  123. typedef struct QueryRecord QueryRecord;
  124. typedef QueryRecord *QueryPtr,**QueryHandle;
  125.  
  126. /* structure for column info in ResultsRecord */
  127. struct DBColInfoRecord {
  128.     short            len;
  129.     short            places;
  130.     short            flags;
  131. };
  132. typedef struct DBColInfoRecord DBColInfoRecord;
  133.  
  134. /* structure of results returned by DBGetResults */
  135. struct ResultsRecord {
  136.     short            numRows;        /* number of rows in result */
  137.     short            numCols;        /* number of columns per row */
  138.     Handle            colTypes;        /* data type array */
  139.     Handle            colData;        /* actual results */
  140.     Handle            colInfo;        /* DBColInfoRecord array */
  141. };
  142. typedef struct ResultsRecord ResultsRecord;
  143.  
  144. #ifdef __cplusplus
  145. extern "C" {
  146. #endif
  147.  
  148. pascal OSErr InitDBPack(void)
  149.     = {0x3F3C, 0x0004, 0x303C, 0x0100, 0xA82F};
  150. pascal OSErr DBInit(long *sessID, ConstStr63Param ddevName, ConstStr255Param host,
  151.     ConstStr255Param user, ConstStr255Param passwd, ConstStr255Param connStr,
  152.     DBAsyncParmBlkPtr asyncPB)
  153.     = {0x303C, 0x0E02, 0xA82F};
  154. pascal OSErr DBEnd(long sessID, DBAsyncParmBlkPtr asyncPB)
  155.     = {0x303C, 0x0403, 0xA82F};
  156. pascal OSErr DBGetConnInfo(long sessID, short sessNum, long *returnedID,
  157.     long *version, Str63 ddevName, Str255 host, Str255 user, Str255 network,
  158.     Str255 connStr, long *start, OSErr *state, DBAsyncParmBlkPtr asyncPB)
  159.     = {0x303C, 0x1704, 0xA82F};
  160. pascal OSErr DBGetSessionNum(long sessID, short *sessNum, DBAsyncParmBlkPtr asyncPB)
  161.     = {0x303C, 0x0605, 0xA82F};
  162. pascal OSErr DBSend(long sessID, char *text, short len, DBAsyncParmBlkPtr asyncPB)
  163.     = {0x303C, 0x0706, 0xA82F};
  164. pascal OSErr DBSendItem(long sessID, DBType dataType, short len, short places,
  165.     short flags, void *buffer, DBAsyncParmBlkPtr asyncPB)
  166.     = {0x303C, 0x0B07, 0xA82F};
  167. pascal OSErr DBExec(long sessID, DBAsyncParmBlkPtr asyncPB)
  168.     = {0x303C, 0x0408, 0xA82F};
  169. pascal OSErr DBState(long sessID, DBAsyncParmBlkPtr asyncPB)
  170.     = {0x303C, 0x0409, 0xA82F};
  171. pascal OSErr DBGetErr(long sessID, long *err1, long *err2, Str255 item1,
  172.     Str255 item2, Str255 errorMsg, DBAsyncParmBlkPtr asyncPB)
  173.     = {0x303C, 0x0E0A, 0xA82F};
  174. pascal OSErr DBBreak(long sessID, Boolean abort, DBAsyncParmBlkPtr asyncPB)
  175.     = {0x303C, 0x050B, 0xA82F};
  176. pascal OSErr DBGetItem(long sessID, long timeout, DBType *dataType, short *len,
  177.     short *places, short *flags, void *buffer, DBAsyncParmBlkPtr asyncPB)
  178.     = {0x303C, 0x100C, 0xA82F};
  179. pascal OSErr DBUnGetItem(long sessID, DBAsyncParmBlkPtr asyncPB)
  180.     = {0x303C, 0x040D, 0xA82F};
  181. pascal OSErr DBKill(DBAsyncParmBlkPtr asyncPB)
  182.     = {0x303C, 0x020E, 0xA82F};
  183. pascal OSErr DBGetNewQuery(short queryID, QueryHandle *query)
  184.     = {0x303C, 0x030F, 0xA82F};
  185. pascal OSErr DBDisposeQuery(QueryHandle query)
  186.     = {0x303C, 0x0210, 0xA82F};
  187. pascal OSErr DBStartQuery(long *sessID, QueryHandle query, ProcPtr statusProc, 
  188.     DBAsyncParmBlkPtr asyncPB)
  189.     = {0x303C, 0x0811, 0xA82F};
  190. pascal OSErr DBGetQueryResults(long sessID, ResultsRecord *results,
  191.     long timeout, ProcPtr statusProc, DBAsyncParmBlkPtr asyncPB)
  192.     = {0x303C, 0x0A12, 0xA82F};
  193. pascal OSErr DBResultsToText(ResultsRecord *results, Handle *theText)
  194.     = {0x303C, 0x0413, 0xA82F};
  195. pascal OSErr DBInstallResultHandler(DBType dataType, ProcPtr theHandler, 
  196.     Boolean isSysHandler)
  197.     = {0x303C, 0x0514, 0xA82F};
  198. pascal OSErr DBRemoveResultHandler(DBType dataType)
  199.     = {0x303C, 0x0215, 0xA82F};
  200. pascal OSErr DBGetResultHandler(DBType dataType, ProcPtr *theHandler, 
  201.     Boolean getSysHandler)
  202.     = {0x303C, 0x0516, 0xA82F};
  203.  
  204. #ifdef __cplusplus
  205. }
  206. #endif
  207.  
  208.  
  209. #endif
  210.